import java.util.Scanner;

/**
 * Created by L.jp
 * Description:
 小美在种田
 时间限制： 3000MS
 内存限制： 589824KB
 题目描述：
 小美最近在玩一个种田类游戏。
 这个游戏的目的是赚尽可能多的钱，游戏中有 n 种作物，其中第 i 种作物从种植到作物成熟采摘需要 ti 天时间，种子买入价格为ai ，作物卖出价格为 bi（一个种子只会产出一个作物，种子可以重复购买）。 而游戏内总时间为 m 天，作物的种子种植和采摘、卖出等不耗时间，成熟之前作物没有价值。
 假设小美只有一块土地（即每个时间只能有一个作物在生长），初始的钱足够多，小美想知道她最多能赚多少钱。
 输入描述
 第一行两个整数 n,m ，表示作物种类数和天数。
 接下来三行每行 n 个整数，分别表示
 t1,...,tn,
 a1,...,an,
 b1,...,bn
 对于所有的数据，1≤ti≤m≤2000,  1≤n≤100000,  0≤ai≤bi≤10000
 输出描述
 输出一个整数表示小美最多能赚的钱
 样例输入
 3 12
 3 4 7
 9 3 2
 11 6 11
 样例输出
 12
 提示
  赚钱最多的方案是先种一个第二种作物，然后种一个第三种作物，耗时4+7=11天，赚的钱数为 6-3+11-2=12，可以证明这是最优的方案（当然先种第三种再种第二种也行）。
 * User: 86189
 * Date: 2023-04-22
 * Time: 19:42
 */
public class Main2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[] t = new int[n];
        int[] a = new int[n];
        int[] b = new int[n];
        int[] diff = new int[n];
        for (int i = 0; i < n; i++) {
            t[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            a[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            b[i] = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            diff[i] = b[i] - a[i];
        }
        int ret = 0;
        for (int i = 0; i < n; i++) {
            m-=t[i];
            ret+=diff[i];
        }
        System.out.println(ret);
    
    }
}
